<?php

class Evento extends DataMapper {

    var $table = 'processos_usuarios';
	
	var $has_many = array("local","tipoevento","processo","usuario");
	

    function __construct($id = NULL)
    {
        parent::__construct($id);
    }
	
	public function listaEventos($processo_id = null){
		
		if($processo_id != null){
			$string = " AND processos_usuarios.processo_id = '".$processo_id."'";
		}else{
			$string = "";
		
		}
        $result = $this->db->query(
		"SELECT  date_format(dt_evento, '%d/%m/%Y %T') as dt_evento, numeroprocesso,
		GROUP_CONCAT(case tipos_parte when 'A' then nome_parte else null end SEPARATOR ', ') AS autor, 
		GROUP_CONCAT(case tipos_parte when 'R' then nome_parte else null end SEPARATOR '<br/> ') AS reu,
		tipoeventos.nome_evento, nome_completo, processos_usuarios.id,processos_usuarios.processo_id
		FROM partes_processos
		LEFT OUTER
		JOIN partes ON partes.id = partes_processos.parte_id
		LEFT OUTER
		JOIN processos ON processos.id = partes_processos.processo_id
		LEFT OUTER
		JOIN tipoprocessos ON tipoprocessos.id = processos.tipoprocesso_id
		LEFT OUTER
		JOIN usuarios ON usuarios.id = processos.usuario_id
		LEFT OUTER
		JOIN processos_usuarios ON processos_usuarios.processo_id = processos.id
		LEFT OUTER
		JOIN tipoeventos ON tipoeventos.id = processos_usuarios.tipoevento_id
		WHERE status_evento = '1' AND processos_usuarios.tipoevento_id in (3,4,5,6,7) 
		$string
		group by processos_usuarios.id	
		");
		
				
		$evento = new Evento();
		$evento->_process_query($result);
		
		return $evento;


    }
	public function listaEvento($processo_id = null){
		
		if($processo_id != null){
			$string = " AND processos_usuarios.processo_id = '".$processo_id."'";
		}else{
			$string = "";
		
		}
        $result = $this->db->query(
		"SELECT  date_format(dt_evento, '%d/%m/%Y %T') as dt_evento, numeroprocesso,
		GROUP_CONCAT(case tipos_parte when 'A' then nome_parte else null end SEPARATOR ', ') AS autor, 
		GROUP_CONCAT(case tipos_parte when 'R' then nome_parte else null end SEPARATOR '<br/> ') AS reu,
		tipoeventos.nome_evento, nome_completo, processos_usuarios.id, status_evento
		FROM partes_processos
		LEFT OUTER
		JOIN partes ON partes.id = partes_processos.parte_id
		LEFT OUTER
		JOIN processos ON processos.id = partes_processos.processo_id
		LEFT OUTER
		JOIN tipoprocessos ON tipoprocessos.id = processos.tipoprocesso_id
		LEFT OUTER
		JOIN usuarios ON usuarios.id = processos.usuario_id
		LEFT OUTER
		JOIN processos_usuarios ON processos_usuarios.processo_id = processos.id
		LEFT OUTER
		JOIN tipoeventos ON tipoeventos.id = processos_usuarios.tipoevento_id
		WHERE processos_usuarios.tipoevento_id in (3,4,5,6,7) 
		$string
		group by processos_usuarios.id	
		");
	
		$evento = new Evento();
		$evento->_process_query($result);
		
		return $evento;


    }
	
	public function historico($processo_id = null){
	
		$result = $this->db->query(
		"
		SELECT DATE_FORMAT(processos_usuarios.dt_cadastro,'%d/%m/%Y %T') AS dt_cadastro,tipoeventos.nome_evento,locais.nome_local, processos_usuarios.`status`,usuarios.nome_completo,processos_usuarios.observacao, DATE_FORMAT(processos_usuarios.dt_evento,'%d/%m/%Y %T') AS dt_evento
		FROM processos_usuarios
		LEFT JOIN tipoeventos ON tipoeventos.id = processos_usuarios.tipoevento_id
		LEFT JOIN usuarios ON usuarios.id = processos_usuarios.usuario_id
		LEFT JOIN locais ON locais.id = processos_usuarios.local_id
		WHERE tipoevento_id NOT BETWEEN '3' AND '7' AND processo_id = '$processo_id'
		");
		
		$evento = new Evento();
		$evento->_process_query($result);
		
		return $evento;
	
	}
	
	public function relatorioSaida($dia, $tipoprocesso, $local){
	
		$result = $this->db->query(
		"
		SELECT processos_usuarios.dt_cadastro, locais.nome_local, numeroprocesso, nomeprocesso, nome_completo, (
			SELECT nome_completo
			FROM usuarios
			WHERE usuarios.id =processos.usuario_id_redist) AS redistribuido
		FROM processos
		LEFT JOIN processos_usuarios ON processos_usuarios.processo_id = processos.id
		LEFT JOIN (
			SELECT processo_id,tipoevento_id, processos_usuarios.status, MAX(processos_usuarios.id) AS MaxId, local_id
			FROM processos_usuarios
			WHERE tipoevento_id = '2' AND local_id = '$local' and date_format(dt_evento,'%d/%m/%Y') = '$dia'
			GROUP BY processo_id, processos_usuarios.status
		) movimentacao ON movimentacao.processo_id = processos.id AND movimentacao.MaxId = processos_usuarios.id
		LEFT JOIN usuarios ON usuarios.id = processos.usuario_id
		LEFT JOIN locais ON locais.id = processos_usuarios.local_id
		LEFT JOIN tipoprocessos ON tipoprocessos.id = processos.tipoprocesso_id
		WHERE 
		processos.mov = 'S' 
		AND movimentacao.status='S' 
		AND processos.tipoprocesso_id IN ($tipoprocesso)
		ORDER BY dt_cadastro asc
		");
		
		$evento = new Evento();
		$evento->_process_query($result);
		
		return $evento;
	
	}
	
	public function relatorioAudiencia($status, $usuarios, $tipoevento,$dt_inicio, $dt_fim){
	
	
	
		$result = $this->db->query(
		"
		SELECT DATE_FORMAT(dt_evento, '%d/%m/%Y %T') AS dt_evento, numeroprocesso, 
		GROUP_CONCAT(CASE tipos_parte WHEN 'A' THEN nome_parte ELSE NULL END SEPARATOR ', ') AS autor, 
		GROUP_CONCAT(CASE tipos_parte WHEN 'R' THEN nome_parte ELSE NULL END SEPARATOR ', ') AS reu,
		tipoeventos.nome_evento, nome_completo, processos_usuarios.observacao, processos_usuarios.id, processos_usuarios.status_evento
		FROM partes_processos
		LEFT OUTER
		JOIN partes ON partes.id = partes_processos.parte_id
		LEFT OUTER
		JOIN processos ON processos.id = partes_processos.processo_id
		LEFT OUTER
		JOIN tipoprocessos ON tipoprocessos.id = processos.tipoprocesso_id
		LEFT OUTER
		JOIN usuarios ON usuarios.id = processos.usuario_id
		LEFT OUTER
		JOIN processos_usuarios ON processos_usuarios.processo_id = processos.id
		LEFT OUTER
		JOIN tipoeventos ON tipoeventos.id = processos_usuarios.tipoevento_id
		WHERE 
		processos.usuario_id in ($usuarios)
		AND status_evento in ($status)
		AND processos_usuarios.tipoevento_id IN ($tipoevento)
		AND processos_usuarios.dt_evento between '$dt_inicio' and '$dt_fim'
		GROUP BY processos_usuarios.id
		ORDER BY processos_usuarios.dt_evento ASC
		");
		

		
		$evento = new Evento();
		$evento->_process_query($result);
		
		return $evento;
	
	}
	
}

/* End of file evento.php */
/* Location: ./application/models/evento.php */


